
package Model.Interface;

import Model.ListUser;
import java.net.InetAddress;
import java.util.Iterator;

/**
 * L'interface CollectionUsers permet de retrouver le couple <tt>Nom,@IP</tt>
 * d'utilisateurs distants connectés au sein d'une ListUser.
 *
 * @author      Frank Djomo
 * @author      Christelle SIAGO HAPPI
 * @author      djomopoueme@gmail.com
 * @author      christelle.siagohappi@gmail.com
 * @version     1.0
 * @see ListUser
 */
public interface  CollectionUser{
    /**
    * Retourne le login d'un utilisateur distant à partir de son Adresse IP
    * @param adresse Adresse IP de l'utilisateur distant dont on cherche le login
    * @return Login de l'utilisateur distant qui correspond à l'adresse IP
    */
    public  String getUsernameByAddress(InetAddress adresse);
    /**
    * Retourne l'adresse IP d'un utilisateur distant à partir de son login
    * @param login     Nom de l'utilisateur distant dont on cherche l'adresse IP
    * @return Adresse IP de l'utilisateur qui correspond au login
    */
    public  InetAddress getAddressByName(String login);  
    /**
    * Teste si le login recherché fait partie de la liste
    * @param login      Login de l'utilisateur recherché
    * @return Résultat de la recherche 
    *         <code>true</code> si login existe
    *         <code>false</code> sinon
    */
    public boolean containsName(String login);
    /**
    * Teste si l'adresse IP recherchée fait partie de la liste
    * @param adresse Adresse IP de l'utilisateur recherché
    * @return  Résultat de la recherche (vrai ou faux)
    *          <code>true</code> si adresse existe
    *          <code>false</code> sinon
    */
    public  boolean containsAddress(InetAddress adresse);
    /**
    * Retourne un iterateur
    * @return Iterateur sur la collection
    */
    public  Iterator iterator();
    
}
